package com.wjs.service;


import com.wjs.entity.User;
import com.wjs.exception.BusinessException;

public interface UserService {
    /**
     * 用户登录
     *
     * @param username 用户名
     * @param password 密码
     * @return 登录成功的用户对象，如果用户名或密码错误则返回null
     * @throws BusinessException 当用户名或密码错误时抛出的业务异常
     */
    User login(String username, String password);

    /**
     * 根据用户名获取用户信息
     *
     * @param username 用户名
     * @return 用户对象，如果用户名不存在则返回null
     */
    User getByUsername(String username);

    /**
     * 用户注册
     *
     * @param user 用户对象，包含用户名和密码
     * @throws BusinessException 当用户名已存在时抛出的业务异常
     */
    void register(User user);

    /**
     * 更新用户信息
     *
     * @param user 包含更新信息的User对象
     * @return 如果更新成功，则返回更新后的用户对象；否则返回null
     * @throws BusinessException 当更新失败时抛出的业务异常
     */
    User update(User user);

    /**
     * 忘记密码
     *
     * @param user 包含用户名和密码的User对象
     * @return 如果忘记密码成功，则返回更新后的用户对象；否则返回null
     * @throws BusinessException 当忘记密码失败时抛出的业务异常
     */
    User forgotPassword(User user);
}
